package com.tojabo.queue;

public class PriorityQ {

	private int maxSize;
	private long[] queArray;
	private int nItems;

	public PriorityQ(int s){
		maxSize = s;
		queArray = new long[maxSize];
		nItems = 0;
	}
	
	public void insert(long item){
		
		if(nItems>=maxSize){
			increaseCapacity();
		}
		
		int j;
		if(nItems==0){
			queArray [nItems++] = item;
		}else{
			for(j=nItems-1;j>=0&&item>queArray[j];j--){				
				queArray[j+1] = queArray[j];				
			}//end for
			
			queArray[j+1] = item;
			nItems++;
		}//end else 
	}
	
	public long remove(){
		return queArray[--nItems];
	}
	
	public long peekMin(){
		return queArray[nItems-1];
	}
	
	public boolean isEmpty(){
		return (nItems==0);
	}
	
	public boolean isFull(){
		return (nItems == maxSize);
	}
	
	public int size(){
		return nItems;
	}
	
	//增加容量
	public void increaseCapacity(){
		int tempMaxSize = maxSize*2;
		long[] tempArray = new long[tempMaxSize];
		for(int i=0;i<queArray.length;i++){
			tempArray[i]=queArray[i];
		}
		
		queArray=tempArray;
		maxSize = tempMaxSize;		
	}
	
	public int capacity(){
		return maxSize;
	}
}
